<?xml version="1.0" encoding="ISO-8859-1" ?>
<highlight needs-build="yes" save-build="no">
    <!-- Map language ID variations to language IDs in this file.
         "from" should be lower case.  "to" should match an ID on
         one of the language elements. -->
    <map>
        <language from="c#" to="cs"/>
		<language from="MonkeySpeak" to="ms"/>
		<language from="DragonSpeak" to="ds"/>
        <language from="csharp" to="cs"/>
        <language from="c++" to="cpp"/>
        <language from="cplusplus" to="cpp"/>
        <language from="cpp#" to="cpp"/>
        <language from="f#" to="fs"/>
        <language from="fsharp" to="fs"/>
        <language from="fsscript" to="fs"/>
        <language from="j#" to="jsharp"/>
        <language from="ecmascript" to="javascript"/>
        <language from="js" to="javascript"/>
        <language from="jscript" to="jscriptnet"/>
        <language from="jscript#" to="jscriptnet"/>
        <language from="jscript.net" to="jscriptnet"/>
        <language from="vb" to="vbnet"/>
        <language from="vb#" to="vbnet"/>
        <language from="vb.net" to="vbnet"/>
        <language from="vbs" to="vbscript"/>
        <language from="htm" to="xml"/>
        <language from="html" to="xml"/>
        <language from="aspnet" to="xml"/>
        <language from="asp.net" to="xml"/>
        <language from="xsl" to="xml"/>
        <language from="sql server" to="sql"/>
        <language from="sqlserver" to="sql"/>
        <language from="powershell" to="pshell"/>
        <language from="ps1" to="pshell"/>
        <language from="py" to="python" />
    </map>
	<!-- families of keywords -->
	<keywordlists>
		<!-- Common C-like language keywords (C, C++, C#) -->
		<keywordlist id="kwclang-keywords">
			<kw>break</kw>
			<kw>case</kw>
			<kw>char</kw>
			<kw>const</kw>
			<kw>continue</kw>
			<kw>default</kw>
			<kw>do</kw>
			<kw>double</kw>
			<kw>else</kw>
			<kw>enum</kw>
			<kw>extern</kw>
			<kw>float</kw>
			<kw>for</kw>
			<kw>goto</kw>
			<kw>if</kw>
			<kw>int</kw>
			<kw>long</kw>
			<kw>return</kw>
			<kw>short</kw>
			<kw>sizeof</kw>
			<kw>static</kw>
			<kw>struct</kw>
			<kw>switch</kw>
			<kw>void</kw>
			<kw>volatile</kw>
			<kw>while</kw>
		</keywordlist>
		<!-- Common C++-like object oriented language keywords (C++, C#) -->
		<keywordlist id="kwclangoo-keywords">
			<kw>bool</kw>
			<kw>catch</kw>
			<kw>class</kw>
			<kw>explicit</kw>
			<kw>false</kw>
			<kw>namespace</kw>
			<kw>new</kw>
			<kw>operator</kw>
			<kw>private</kw>
			<kw>protected</kw>
			<kw>public</kw>
			<kw>this</kw>
			<kw>throw</kw>
			<kw>true</kw>
			<kw>try</kw>
			<kw>using</kw>
			<kw>virtual</kw>
		</keywordlist>
		<!-- C keywords -->
		<keywordlist id="kwc-keywords">
			<kw>auto</kw>
			<kw>register</kw>
			<kw>signed</kw>
			<kw>typedef</kw>
			<kw>union</kw>
			<kw>unsigned</kw>
		</keywordlist>
		<!-- C++ keywords -->
		<keywordlist id="kwcpp-keywords">
			<kw>asm</kw>
			<kw>const_cast</kw>
			<kw>delete</kw>
			<kw>dynamic_cast</kw>
			<kw>friend</kw>
			<kw>inline</kw>
			<kw>mutable</kw>
			<kw>reinterpret_cast</kw>
			<kw>static_cast</kw>
			<kw>template</kw>
			<kw>typeid</kw>
			<kw>typename</kw>
			<kw>wchar_t</kw>
		</keywordlist>
		<!-- STL keywords -->
		<keywordlist id="kwcpp-stl" pre="(std\s*::\s*){0,1}">
			<kw>vector</kw>
			<kw>set</kw>
			<kw>map</kw>
			<kw>list</kw>
			<kw>stack</kw>
			<kw>deque</kw>
			<kw>multimap</kw>
			<kw>multiset</kw>
		</keywordlist>
		<!-- Managed C++ keywords -->
		<keywordlist id="kwcpp-managed">
            <kw>abstract</kw>
            <kw>array</kw>
            <kw>delegate</kw>
            <kw>each</kw>
            <kw>event</kw>
            <kw>finally</kw>
            <kw>gcnew</kw>
            <kw>generic</kw>
            <kw>interface</kw>
            <kw>interior_ptr</kw>
            <kw>literal</kw>
            <kw>nullptr</kw>
            <kw>override</kw>
            <kw>pin_ptr</kw>
            <kw>property</kw>
            <kw>ref</kw>
            <kw>safe_cast</kw>
            <kw>sealed</kw>
            <kw>typeid</kw>
            <kw>value</kw>
            <kw>where</kw>
		</keywordlist>
		<!-- C# keywords -->
		<keywordlist id="kwcs-keywords">
			<kw>abstract</kw>
			<kw>as</kw>
			<kw>ascending</kw>
			<kw>async</kw>
			<kw>await</kw>
			<kw>base</kw>
			<kw>byte</kw>
			<kw>checked</kw>
			<kw>decimal</kw>
			<kw>delegate</kw>
			<kw>descending</kw>
			<kw>dynamic</kw>
			<kw>equals</kw>
			<kw>event</kw>
			<kw>finally</kw>
			<kw>fixed</kw>
			<kw>foreach</kw>
			<kw>from</kw>
			<kw>get</kw>
			<kw>global</kw>
			<kw>group</kw>
			<kw>implicit</kw>
			<kw>in</kw>
			<kw>interface</kw>
			<kw>internal</kw>
			<kw>into</kw>
			<kw>is</kw>
			<kw>join</kw>
			<kw>let</kw>
			<kw>lock</kw>
			<kw>null</kw>
			<kw>object</kw>
			<kw>on</kw>
			<kw>orderby</kw>
			<kw>out</kw>
			<kw>override</kw>
			<kw>params</kw>
			<kw>partial</kw>
			<kw>readonly</kw>
			<kw>ref</kw>
			<kw>sbyte</kw>
			<kw>sealed</kw>
			<kw>select</kw>
			<kw>set</kw>
			<kw>stackalloc</kw>
			<kw>string</kw>
			<kw>typeof</kw>
			<kw>uint</kw>
			<kw>ulong</kw>
			<kw>unchecked</kw>
			<kw>unsafe</kw>
			<kw>ushort</kw>
			<kw>value</kw>
			<kw>var</kw>
			<kw>where</kw>
			<kw>yield</kw>
		</keywordlist>
		<!-- Common VB-like language keywords (VB.NET, VBScript) -->
		<keywordlist id="kwvblang-keywords">
			<kw>And</kw>
			<kw>CBool</kw>
			<kw>CByte</kw>
			<kw>CDate</kw>
			<kw>CDbl</kw>
			<kw>CInt</kw>
			<kw>CLng</kw>
			<kw>CSng</kw>
			<kw>CStr</kw>
			<kw>Call</kw>
			<kw>Case</kw>
			<kw>Class</kw>
			<kw>Const</kw>
			<kw>Date</kw>
			<kw>Dim</kw>
			<kw>Do</kw>
			<kw>Each</kw>
			<kw>Else</kw>
			<kw>End</kw>
			<kw>Erase</kw>
			<kw>Error</kw>
			<kw>Exit</kw>
			<kw>False</kw>
			<kw>For</kw>
			<kw>Function</kw>
			<kw>Get</kw>
			<kw>If</kw>
			<kw>Is</kw>
			<kw>Loop</kw>
			<kw>Mod</kw>
			<kw>Next</kw>
			<kw>Not</kw>
			<kw>Nothing</kw>
			<kw>On</kw>
			<kw>Option</kw>
			<kw>Or</kw>
			<kw>Private</kw>
			<kw>Property</kw>
			<kw>Public</kw>
			<kw>ReDim</kw>
			<kw>Resume</kw>
			<kw>Select</kw>
			<kw>Set</kw>
			<kw>Step</kw>
			<kw>Stop</kw>
			<kw>String</kw>
			<kw>Sub</kw>
			<kw>Then</kw>
			<kw>To</kw>
			<kw>True</kw>
			<kw>While</kw>
			<kw>With</kw>
			<kw>Xor</kw>
		</keywordlist>
		<!-- VB.NET language keywords -->
		<keywordlist id="kwvbnet-keywords">
			<kw>AddHandler</kw>
			<kw>AddressOf</kw>
			<kw>Alias</kw>
			<kw>AndAlso</kw>
			<kw>As</kw>
			<kw>Async</kw>
			<kw>Await</kw>
			<kw>Boolean</kw>
			<kw>ByRef</kw>
			<kw>ByVal</kw>
			<kw>Byte</kw>
			<kw>CChar</kw>
			<kw>CDec</kw>
			<kw>CObj</kw>
			<kw>CSByte</kw>
			<kw>CShort</kw>
			<kw>CType</kw>
			<kw>CUInt</kw>
			<kw>CULng</kw>
			<kw>CUShort</kw>
			<kw>Catch</kw>
			<kw>Char</kw>
			<kw>Continue</kw>
			<kw>Decimal</kw>
			<kw>Declare</kw>
			<kw>Default</kw>
			<kw>Delegate</kw>
			<kw>DirectCast</kw>
			<kw>Double</kw>
			<kw>ElseIf</kw>
			<kw>Enum</kw>
			<kw>Event</kw>
			<kw>Finally</kw>
			<kw>Friend</kw>
			<kw>GetType</kw>
			<kw>Global</kw>
			<kw>GoTo</kw>
			<kw>Handles</kw>
			<kw>Implements</kw>
			<kw>Imports</kw>
			<kw>In</kw>
			<kw>Inherits</kw>
			<kw>Integer</kw>
			<kw>Interface</kw>
			<kw>IsNot</kw>
			<kw>Lib</kw>
			<kw>Like</kw>
			<kw>Long</kw>
			<kw>Me</kw>
			<kw>Module</kw>
			<kw>MustInherit</kw>
			<kw>MustOverride</kw>
			<kw>MyBase</kw>
			<kw>MyClass</kw>
			<kw>Namespace</kw>
			<kw>Narrowing</kw>
			<kw>New</kw>
			<kw>NotInheritable</kw>
			<kw>NotOverridable</kw>
			<kw>Object</kw>
			<kw>Of</kw>
			<kw>Operator</kw>
			<kw>Optional</kw>
			<kw>OrElse</kw>
			<kw>Overloads</kw>
			<kw>Overridable</kw>
			<kw>Overrides</kw>
			<kw>ParamArray</kw>
			<kw>Partial</kw>
			<kw>Protected</kw>
			<kw>RaiseEvent</kw>
			<kw>ReadOnly</kw>
			<kw>RemoveHandler</kw>
			<kw>Return</kw>
			<kw>SByte</kw>
			<kw>Shadows</kw>
			<kw>Shared</kw>
			<kw>Short</kw>
			<kw>Single</kw>
			<kw>Static</kw>
			<kw>Structure</kw>
			<kw>SyncLock</kw>
			<kw>Throw</kw>
			<kw>Try</kw>
			<kw>TryCast</kw>
			<kw>TypeOf</kw>
			<kw>UInteger</kw>
			<kw>ULong</kw>
			<kw>UShort</kw>
			<kw>Using</kw>
			<kw>When</kw>
			<kw>Widening</kw>
			<kw>WithEvents</kw>
			<kw>WriteOnly</kw>
		</keywordlist>
		<!-- VBScript keywords -->
		<keywordlist id="kwvbscript-statements">
			<kw>Abs</kw>
			<kw>Array</kw>
			<kw>Asc</kw>
			<kw>Atn</kw>
			<kw>CCur</kw>
			<kw>Chr</kw>
			<kw>Clear</kw>
			<kw>Cos</kw>
			<kw>CreateObject</kw>
			<kw>DateAdd</kw>
			<kw>DateDiff</kw>
			<kw>DatePart</kw>
			<kw>DateSerial</kw>
			<kw>DateValue</kw>
			<kw>Day</kw>
			<kw>Derived</kw>
			<kw>Empty</kw>
			<kw>Escape</kw>
			<kw>Eval</kw>
			<kw>Execute</kw>
			<kw>ExecuteGlobal</kw>
			<kw>Exp</kw>
			<kw>Explicit</kw>
			<kw>Filter</kw>
			<kw>Fix</kw>
			<kw>FormatCurrency</kw>
			<kw>FormatDateTime</kw>
			<kw>FormatNumber</kw>
			<kw>FormatPercent</kw>
			<kw>GetLocale</kw>
			<kw>GetObject</kw>
			<kw>GetRef</kw>
			<kw>Hex</kw>
			<kw>Hour</kw>
			<kw>InStr</kw>
			<kw>InStrRev</kw>
			<kw>InputBox</kw>
			<kw>Int</kw>
			<kw>IsArray</kw>
			<kw>IsDate</kw>
			<kw>IsEmpty</kw>
			<kw>IsNull</kw>
			<kw>IsNumeric</kw>
			<kw>IsObject</kw>
			<kw>Join</kw>
			<kw>LBound</kw>
			<kw>LCase</kw>
			<kw>LTrim</kw>
			<kw>Left</kw>
			<kw>Len</kw>
			<kw>Let</kw>
			<kw>LoadPicture</kw>
			<kw>Log</kw>
			<kw>Math</kw>
			<kw>Maths</kw>
			<kw>Mid</kw>
			<kw>Minute</kw>
			<kw>Month</kw>
			<kw>MonthName</kw>
			<kw>MsgBox</kw>
			<kw>Now</kw>
			<kw>Null</kw>
			<kw>Oct</kw>
			<kw>RGB</kw>
			<kw>RTrim</kw>
			<kw>Raise</kw>
			<kw>Randomize</kw>
			<kw>Replace</kw>
			<kw>Right</kw>
			<kw>Rnd</kw>
			<kw>Round</kw>
			<kw>ScriptEngine</kw>
			<kw>ScriptEngineBuildVersion</kw>
			<kw>ScriptEngineMajorVersion</kw>
			<kw>ScriptEngineMinorVersion</kw>
			<kw>Second</kw>
			<kw>SetLocale</kw>
			<kw>Sgn</kw>
			<kw>Sin</kw>
			<kw>Space</kw>
			<kw>Split</kw>
			<kw>Sqr</kw>
			<kw>StrComp</kw>
			<kw>StrReverse</kw>
			<kw>Tan</kw>
			<kw>Test</kw>
			<kw>Time</kw>
			<kw>TimeSerial</kw>
			<kw>TimeValue</kw>
			<kw>Timer</kw>
			<kw>Trim</kw>
			<kw>TypeName</kw>
			<kw>UBound</kw>
			<kw>UCase</kw>
			<kw>Unescape</kw>
			<kw>VarType</kw>
			<kw>Weekday</kw>
			<kw>WeekdayName</kw>
			<kw>Wend</kw>
			<kw>Write</kw>
			<kw>WriteLine</kw>
			<kw>Year</kw>
		</keywordlist>
		<!-- JavaScript keywords -->
		<keywordlist id="kwjavascript-statements">
            <kw>break</kw>
            <kw>case</kw>
            <kw>catch</kw>
            <kw>const</kw>
            <kw>continue</kw>
            <kw>debugger</kw>
            <kw>default</kw>
            <kw>delete</kw>
            <kw>do</kw>
            <kw>each</kw>
            <kw>else</kw>
            <kw>export</kw>
            <kw>false</kw>
            <kw>for</kw>
            <kw>function</kw>
            <kw>get</kw>
            <kw>if</kw>
            <kw>in</kw>
            <kw>instanceof</kw>
            <kw>let</kw>
            <kw>new</kw>
            <kw>null</kw>
            <kw>return</kw>
            <kw>set</kw>
            <kw>switch</kw>
            <kw>this</kw>
            <kw>throw</kw>
            <kw>true</kw>
            <kw>try</kw>
            <kw>typeof</kw>
            <kw>var</kw>
            <kw>void</kw>
            <kw>while</kw>
            <kw>with</kw>
            <kw>yield</kw>
		</keywordlist>
		<!-- JavaScript function keywords -->
		<keywordlist id="kwjavascript-functions">
            <kw>arguments</kw>
            <kw>decodeURI</kw>
            <kw>decodeURIComponent</kw>
            <kw>encodeURI</kw>
            <kw>encodeURIComponent</kw>
            <kw>eval</kw>
            <kw>isFinite</kw>
            <kw>isNaN</kw>
            <kw>parseFloat</kw>
            <kw>parseInt</kw>
		</keywordlist>
		<!-- JavaScript object keywords -->
		<keywordlist id="kwjavascript-objects">
            <kw>ActiveXObject</kw>
            <kw>Array</kw>
            <kw>Boolean</kw>
            <kw>Date</kw>
            <kw>Debug</kw>
            <kw>Enumerator</kw>
            <kw>Error</kw>
            <kw>EvalError</kw>
            <kw>Function</kw>
            <kw>Global</kw>
            <kw>Math</kw>
            <kw>Number</kw>
            <kw>Object</kw>
            <kw>RangeError</kw>
            <kw>ReferenceError</kw>
            <kw>RegExp</kw>
            <kw>String</kw>
            <kw>SyntaxError</kw>
            <kw>TypeError</kw>
            <kw>URIError</kw>
            <kw>VBArray</kw>
		</keywordlist>
		<!-- JScript.NET keywords -->
		<keywordlist id="kwjscriptnet-statements">
            <kw>abstract</kw>
            <kw>boolean</kw>
            <kw>byte</kw>
            <kw>char</kw>
            <kw>class</kw>
            <kw>decimal</kw>
            <kw>double</kw>
            <kw>enum</kw>
            <kw>extends</kw>
            <kw>final</kw>
            <kw>finally</kw>
            <kw>float</kw>
            <kw>implements</kw>
            <kw>import</kw>
            <kw>int</kw>
            <kw>interface</kw>
            <kw>internal</kw>
            <kw>long</kw>
            <kw>package</kw>
            <kw>private</kw>
            <kw>protected</kw>
            <kw>protected</kw>
            <kw>public</kw>
            <kw>sbyte</kw>
            <kw>short</kw>
            <kw>static</kw>
            <kw>super</kw>
            <kw>uint</kw>
            <kw>ulong</kw>
            <kw>ushort</kw>
		</keywordlist>
		<!-- J# keywords -->
		<keywordlist id="kwjsharp">
			<kw>abstract</kw>
			<kw>boolean</kw>
			<kw>break</kw>
			<kw>byte</kw>
			<kw>case</kw>
			<kw>catch</kw>
			<kw>char</kw>
			<kw>class</kw>
			<kw>const</kw>
			<kw>continue</kw>
			<kw>default</kw>
			<kw>delegate</kw>
			<kw>do</kw>
			<kw>double</kw>
			<kw>else</kw>
			<kw>enum</kw>
			<kw>extends</kw>
			<kw>false</kw>
			<kw>final</kw>
			<kw>finally</kw>
			<kw>float</kw>
			<kw>for</kw>
			<kw>if</kw>
			<kw>implements</kw>
			<kw>import</kw>
			<kw>instanceof</kw>
			<kw>int</kw>
			<kw>interface</kw>
			<kw>long</kw>
			<kw>multicast</kw>
			<kw>native</kw>
			<kw>new</kw>
			<kw>null</kw>
			<kw>package</kw>
			<kw>private</kw>
			<kw>protected</kw>
			<kw>public</kw>
			<kw>return</kw>
			<kw>short</kw>
			<kw>static</kw>
			<kw>strictfp</kw>
			<kw>super</kw>
			<kw>switch</kw>
			<kw>synchronized</kw>
			<kw>this</kw>
			<kw>throw</kw>
			<kw>throws</kw>
			<kw>transient</kw>
			<kw>true</kw>
			<kw>try</kw>
			<kw>ubyte</kw>
			<kw>void</kw>
			<kw>volatile</kw>
			<kw>while</kw>
		</keywordlist>
		<!-- SQL keywords -->
		<keywordlist id="kwsql-keywords">
			<kw>ADD</kw>
			<kw>ALL</kw>
			<kw>ALTER</kw>
			<kw>AND</kw>
			<kw>ANY</kw>
			<kw>AS</kw>
			<kw>ASC</kw>
			<kw>AUTHORIZATION</kw>
			<kw>BACKUP</kw>
			<kw>BEGIN</kw>
			<kw>BETWEEN</kw>
			<kw>BREAK</kw>
			<kw>BROWSE</kw>
			<kw>BULK</kw>
			<kw>BY</kw>
			<kw>CASCADE</kw>
			<kw>CASE</kw>
			<kw>CHECK</kw>
			<kw>CHECKPOINT</kw>
			<kw>CLOSE</kw>
			<kw>CLUSTERED</kw>
			<kw>COALESCE</kw>
			<kw>COLLATE</kw>
			<kw>COLUMN</kw>
			<kw>COMMIT</kw>
			<kw>COMPUTE</kw>
			<kw>CONSTRAINT</kw>
			<kw>CONTAINS</kw>
			<kw>CONTAINSTABLE</kw>
			<kw>CONTINUE</kw>
			<kw>CONVERT</kw>
			<kw>CREATE</kw>
			<kw>CROSS</kw>
			<kw>CURRENT</kw>
			<kw>CURRENT_DATE</kw>
			<kw>CURRENT_TIME</kw>
			<kw>CURRENT_TIMESTAMP</kw>
			<kw>CURRENT_USER</kw>
			<kw>CURSOR</kw>
			<kw>DATABASE</kw>
			<kw>DBCC</kw>
			<kw>DEALLOCATE</kw>
			<kw>DECLARE</kw>
			<kw>DEFAULT</kw>
			<kw>DELETE</kw>
			<kw>DENY</kw>
			<kw>DESC</kw>
			<kw>DISK</kw>
			<kw>DISTINCT</kw>
			<kw>DISTRIBUTED</kw>
			<kw>DOUBLE</kw>
			<kw>DROP</kw>
			<kw>DUMMY</kw>
			<kw>DUMP</kw>
			<kw>ELSE</kw>
			<kw>END</kw>
			<kw>ERRLVL</kw>
			<kw>ESCAPE</kw>
			<kw>EXCEPT</kw>
			<kw>EXEC</kw>
			<kw>EXECUTE</kw>
			<kw>EXISTS</kw>
			<kw>EXIT</kw>
			<kw>FETCH</kw>
			<kw>FILE</kw>
			<kw>FILLFACTOR</kw>
			<kw>FOR</kw>
			<kw>FOREIGN</kw>
			<kw>FREETEXT</kw>
			<kw>FREETEXTTABLE</kw>
			<kw>FROM</kw>
			<kw>FULL</kw>
			<kw>FUNCTION</kw>
			<kw>GOTO</kw>
			<kw>GRANT</kw>
			<kw>GROUP</kw>
			<kw>HAVING</kw>
			<kw>HOLDLOCK</kw>
			<kw>IDENTITY</kw>
			<kw>IDENTITY_INSERT</kw>
			<kw>IDENTITYCOL</kw>
			<kw>IF</kw>
			<kw>IN</kw>
			<kw>INDEX</kw>
			<kw>INNER</kw>
			<kw>INSERT</kw>
			<kw>INTERSECT</kw>
			<kw>INTO</kw>
			<kw>IS</kw>
			<kw>JOIN</kw>
			<kw>KEY</kw>
			<kw>KILL</kw>
			<kw>LEFT</kw>
			<kw>LIKE</kw>
			<kw>LINENO</kw>
			<kw>LOAD</kw>
			<kw>NATIONAL</kw>
			<kw>NOCHECK</kw>
			<kw>NONCLUSTERED</kw>
			<kw>NOT</kw>
			<kw>NULL</kw>
			<kw>NULLIF</kw>
			<kw>OF</kw>
			<kw>OFF</kw>
			<kw>OFFSETS</kw>
			<kw>ON</kw>
			<kw>OPEN</kw>
			<kw>OPENDATASOURCE</kw>
			<kw>OPENQUERY</kw>
			<kw>OPENROWSET</kw>
			<kw>OPENXML</kw>
			<kw>OPTION</kw>
			<kw>OR</kw>
			<kw>ORDER</kw>
			<kw>OUTER</kw>
			<kw>OVER</kw>
			<kw>PERCENT</kw>
			<kw>PLAN</kw>
			<kw>PRECISION</kw>
			<kw>PRIMARY</kw>
			<kw>PRINT</kw>
			<kw>PROC</kw>
			<kw>PROCEDURE</kw>
			<kw>PUBLIC</kw>
			<kw>RAISERROR</kw>
			<kw>READ</kw>
			<kw>READTEXT</kw>
			<kw>RECONFIGURE</kw>
			<kw>REFERENCES</kw>
			<kw>REPLICATION</kw>
			<kw>RESTORE</kw>
			<kw>RESTRICT</kw>
			<kw>RETURN</kw>
			<kw>REVOKE</kw>
			<kw>RIGHT</kw>
			<kw>ROLLBACK</kw>
			<kw>ROWCOUNT</kw>
			<kw>ROWGUIDCOL</kw>
			<kw>RULE</kw>
			<kw>SAVE</kw>
			<kw>SCHEMA</kw>
			<kw>SELECT</kw>
			<kw>SESSION_USER</kw>
			<kw>SET</kw>
			<kw>SETUSER</kw>
			<kw>SHUTDOWN</kw>
			<kw>SOME</kw>
			<kw>STATISTICS</kw>
			<kw>SYSTEM_USER</kw>
			<kw>TABLE</kw>
			<kw>TEXTSIZE</kw>
			<kw>THEN</kw>
			<kw>TO</kw>
			<kw>TOP</kw>
			<kw>TRAN</kw>
			<kw>TRANSACTION</kw>
			<kw>TRIGGER</kw>
			<kw>TRUNCATE</kw>
			<kw>TSEQUAL</kw>
			<kw>UNION</kw>
			<kw>UNIQUE</kw>
			<kw>UPDATE</kw>
			<kw>UPDATETEXT</kw>
			<kw>USE</kw>
			<kw>USER</kw>
			<kw>VALUES</kw>
			<kw>VARYING</kw>
			<kw>VIEW</kw>
			<kw>WAITFOR</kw>
			<kw>WHEN</kw>
			<kw>WHERE</kw>
			<kw>WHILE</kw>
			<kw>WITH</kw>
			<kw>WRITETEXT</kw>
		</keywordlist>
		<!-- Common PowerShell language keywords -->
		<keywordlist id="kwpshelllangoo-keywords" use-word-boundary="false">
			<kw>$true</kw>
			<kw>$false</kw>
			<kw>$_</kw>
			<kw>$foreach</kw>
			<kw>$host</kw>
			<kw>$input</kw>
			<kw>$error</kw>
			<kw>$null</kw>
			<kw>$OFS</kw>
			<kw>$PSHOME</kw>
			<kw>$switch</kw>
			<kw>$this</kw>
		</keywordlist>
        <!-- Python keywords -->
        <keywordlist id="kwpython-keywords">
            <kw>and</kw>
            <kw>as</kw>
            <kw>assert</kw>
            <kw>break</kw>
            <kw>class</kw>
            <kw>continue</kw>
            <kw>def</kw>
            <kw>del</kw>
            <kw>elif</kw>
            <kw>else</kw>
            <kw>except</kw>
            <kw>exec</kw>
            <kw>finally</kw>
            <kw>for</kw>
            <kw>from</kw>
            <kw>global</kw>
            <kw>if</kw>
            <kw>import</kw>
            <kw>in</kw>
            <kw>is</kw>
            <kw>lambda</kw>
            <kw>not</kw>
            <kw>or</kw>
            <kw>pass</kw>
            <kw>print</kw>
            <kw>raise</kw>
            <kw>return</kw>
            <kw>try</kw>
            <kw>while</kw>
            <kw>with</kw>
            <kw>yield</kw>
        </keywordlist>
		<!-- F# language keywords -->
		<keywordlist id="kwfslang-keywords">
			<kw>abstract</kw>
			<kw>and</kw>
			<kw>as</kw>
			<kw>asr</kw>
			<kw>assert</kw>
			<kw>atomic</kw>
			<kw>base</kw>
			<kw>begin</kw>
			<kw>break</kw>
			<kw>checked</kw>
			<kw>class</kw>
			<kw>component</kw>
			<kw>const</kw>
			<kw>constraint</kw>
			<kw>constructor</kw>
			<kw>continue</kw>
			<kw>default</kw>
			<kw>delegate</kw>
			<kw>do</kw>
			<kw>done</kw>
			<kw>downcast</kw>
			<kw>downto</kw>
			<kw>eager</kw>
			<kw>elif</kw>
			<kw>else</kw>
			<kw>end</kw>
			<kw>event</kw>
			<kw>exception</kw>
			<kw>extern</kw>
			<kw>external</kw>
			<kw>false</kw>
			<kw>finally</kw>
			<kw>fixed</kw>
			<kw>for</kw>
			<kw>fori</kw>
			<kw>fun</kw>
			<kw>function</kw>
			<kw>functor</kw>
			<kw>global</kw>
			<kw>if</kw>
			<kw>in</kw>
			<kw>include</kw>
			<kw>inherit</kw>
			<kw>inline</kw>
			<kw>interface</kw>
			<kw>internal</kw>
			<kw>land</kw>
			<kw>lazy</kw>
			<kw>let</kw>
			<kw>lor</kw>
			<kw>lsl</kw>
			<kw>lsr</kw>
			<kw>lxor</kw>
			<kw>match</kw>
			<kw>member</kw>
			<kw>method</kw>
			<kw>mixin</kw>
			<kw>mod</kw>
			<kw>module</kw>
			<kw>mutable</kw>
			<kw>namespace</kw>
			<kw>new</kw>
			<kw>null</kw>
			<kw>object</kw>
			<kw>of</kw>
			<kw>open</kw>
			<kw>or</kw>
			<kw>override</kw>
			<kw>parallel</kw>
			<kw>params</kw>
			<kw>private</kw>
			<kw>process</kw>
			<kw>protected</kw>
			<kw>public</kw>
			<kw>pure</kw>
			<kw>rec</kw>
			<kw>return</kw>
			<kw>sealed</kw>
			<kw>sig</kw>
			<kw>static</kw>
			<kw>struct</kw>
			<kw>tailcall</kw>
			<kw>then</kw>
			<kw>to</kw>
			<kw>trait</kw>
			<kw>true</kw>
			<kw>try</kw>
			<kw>type</kw>
			<kw>upcast</kw>
			<kw>use</kw>
			<kw>val</kw>
			<kw>virtual</kw>
			<kw>void</kw>
			<kw>volatile</kw>
			<kw>when</kw>
			<kw>while</kw>
			<kw>with</kw>
			<kw>yield</kw>
		</keywordlist>
	</keywordlists>
	<!-- Languages syntax specification -->
	<languages>
		<!-- C language specification -->
		<language id="c" tabSize="4" name="C">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- <include.file> -->
					<regexp id="include" attribute="literal" context="code" expression="&lt;\w+(\.\w*)*&gt;" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C -->
					<keyword attribute="keyword" context="code" family="kwc-keywords" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
			</contexts>
		</language>
		<!-- C++ language specification -->
		<language id="cpp" tabSize="4" name="C++">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- <include.file> -->
					<regexp id="include" attribute="literal" context="code" expression="&lt;\w+(\.\w*)*&gt;(?![\%\^\*])" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C++-like -->
					<keyword attribute="keyword" context="code" family="kwclangoo-keywords" />
					<!-- keyword C -->
					<keyword attribute="keyword" context="code" family="kwc-keywords" />
					<!-- keyword C++ -->
					<keyword attribute="keyword" context="code" family="kwcpp-keywords" />
					<!-- keyword stl -->
					<keyword attribute="keyword" context="code" family="kwcpp-stl" />
					<!-- keyword Managed C++ -->
					<keyword attribute="keyword" context="code" family="kwcpp-managed" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- C# language specification -->
		<language id="cs" tabSize="4" name="C#">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C++-like -->
					<keyword attribute="keyword" context="code" family="kwclangoo-keywords" />
					<!-- keyword C# -->
					<keyword attribute="keyword" context="code" family="kwcs-keywords" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- F# language specification -->
		<language id="fs" tabSize="4" name="F#">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- (* block of comment *) -->
					<detect2chars attribute="hidden" context="blockcomment" char="(" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword F# -->
					<keyword attribute="keyword" context="code" family="kwfslang-keywords" />
				</context>
				<!-- block comment (* ... *) -->
				<context id="blockcomment" attribute="fsblockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1=")" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="(" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>

		<!-- VB.NET -->
		<language id="vbnet" not-case-sensitive="yes" tabSize="4" name="VB.NET">
			<contexts default="code">
				<!-- Code context -->
				<context id="code" attribute="code">
					<!-- Single line of comment -->
					<regexp id="vb-comment" attribute="comment" context="code" expression="(?&lt;=\W|^)('.*?|Rem(\t| ).*?|Rem)([\r\n]{1,2}|$)" />
					<!-- literal -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|&quot;&quot;)*?&quot;" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+(\s*(if|region))?" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="&amp;[h][0-9a-f]*&amp;?|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvblang-keywords" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvbnet-keywords" />
				</context>
			</contexts>
		</language>
		<!-- VB Script -->
		<language id="vbscript" not-case-sensitive="yes" tabSize="4" name="VBScript">
			<contexts default="code">
				<!-- Code context -->
				<context id="code" attribute="code">
					<!-- Single line of comment -->
					<regexp id="vb-comment" attribute="comment" context="code" expression="(?&lt;=\W|^)('.*?|Rem(\t| ).*?|Rem)([\r\n]{1,2}|$)" />
					<!-- literal -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|&quot;&quot;)*?&quot;" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="&amp;[h][0-9a-f]*&amp;?|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvblang-keywords" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvbscript-statements" />
				</context>
			</contexts>
		</language>
		<!-- JavaScript-->
		<language id="javascript" tabSize="4" name="JavaScript">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- regex literal -->
					<regexp id="reliteral" attribute="literal" context="code" expression="/(\\/|[^/\r\n])+/[gim]*" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- statements -->
					<keyword attribute="keyword" context="code" family="kwjavascript-statements" />
					<!-- functions -->
					<keyword attribute="keyword" context="code" family="kwjavascript-functions" />
					<!-- objects -->
					<keyword attribute="keyword" context="code" family="kwjavascript-objects" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<language id="jscriptnet" tabSize="4" name="JScript.NET">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- regex literal -->
					<regexp id="reliteral" attribute="literal" context="code" expression="/(\\/|[^/\r\n])+/[gim]*" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- statements -->
					<keyword attribute="keyword" context="code" family="kwjavascript-statements" />
					<!-- functions -->
					<keyword attribute="keyword" context="code" family="kwjavascript-functions" />
					<!-- objects -->
					<keyword attribute="keyword" context="code" family="kwjavascript-objects" />
					<!-- JScript.NET statements -->
					<keyword attribute="keyword" context="code" family="kwjscriptnet-statements" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- J# language specification -->
		<language id="jsharp" tabSize="4" name="J#">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword J# -->
					<keyword attribute="keyword" context="code" family="kwjsharp" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- XML -->
		<language id="xml" tabSize="2" name="XML">
			<contexts default="value">
				<!-- Value context -->
				<context id="value" attribute="xml-value">
					<!-- Comment -->
					<regexp id="rx-xml-comment" attribute="xml-comment" context="value" expression="&lt;!--(.|\n)*?--&gt;" />
					<!-- cdata -->
					<regexp id="rx-hidden" attribute="hidden" context="cdata" expression="&lt;!\[CDATA\[" />
					<!-- A doctype of some sort-->
					<regexp id="rx-doctype" attribute="xml-bracket" context="doctype" expression="&lt;!" />
					<!-- closing element -->
					<regexp id="rx-close-elem" attribute="xml-bracket" context="closing-element" expression="&lt;/" />
					<!-- opening element -->
					<regexp id="rx-open-elem" attribute="xml-bracket" context="opening-element" expression="&lt;\?{0,1}" />
                    <!-- Leftover end bracket from doctype -->
					<regexp id="rx-end-bracket" attribute="xml-bracket" context="value" expression="&gt;" />
				</context>
				<!-- cdata tag -->
				<context id="cdata" attribute="xml-cdata">
					<regexp id="rx-hidden" attribute="hidden" context="value" expression="\]\]&gt;" />
				</context>
				<!-- A doctype of some sort -->
				<context id="doctype" attribute="xml-code">
					<regexp id="rx-doc-bracket" attribute="xml-bracket" context="value" expression="&gt;" />
					<!-- Comment -->
					<regexp id="rx-doc-comment" attribute="xml-comment" context="doctype" expression="&lt;!--(.|\n)*?--&gt;" />
                    <!-- A quoted string or attribute name -->
					<regexp id="rx-doc-quote" attribute="xml-attribute-value" context="doctype" expression="(&quot;(.|[\r\n])*?&quot;|&apos;(.|[\r\n])*?&apos;|\b(\w|-|\.)+\b)" />
					<!-- A doctype of some sort-->
					<regexp id="rx-doc-nested" attribute="xml-bracket" context="doctype" expression="&lt;!" />
				</context>
				<!-- opening element context -->
				<context id="opening-element" attribute="xml-code">
					<!-- find tag... -->
					<regexp id="rx-attr" attribute="xml-tag" context="element-attributes" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- closing element -->
				<context id="closing-element" attribute="xml-code">
					<regexp id="rx-closing-elem" attribute="xml-tag" context="closing-element" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
				</context>
				<!-- attributes group -->
				<context id="element-attributes" attribute="xml-code">
					<!-- find end of element -->
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
					<!-- find attributes... -->
					<regexp id="rx-attr-name" attribute="xml-attribute-name" context="attribute-name" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- attribute name -->
				<context id="attribute-name" attribute="hidden">
					<regexp id="rx-elem-attrs" attribute="xml-attribute-value" context="element-attributes" expression="(&quot;(.|[\r\n])*?&quot;|&apos;(.|[\r\n])*?&apos;|\b(\w|-|\.)+\b)" />
                    <!-- This must come last as equals can appear in quoted strings -->
					<regexp id="rx-elem-equal" attribute="xml-attribute-equal" context="attribute-name" expression="=" />
				</context>
			</contexts>
		</language>
		<!-- XAML -->
		<language id="xaml" tabSize="2" name="XAML">
			<contexts default="value">
				<!-- Value context -->
				<context id="value" attribute="xml-value">
					<!-- Comment -->
					<regexp id="rx-xml-comment" attribute="xml-comment" context="value" expression="&lt;!--(.|\n)*?--&gt;" />
					<!-- cdata -->
					<regexp id="rx-hidden" attribute="hidden" context="cdata" expression="&lt;!\[CDATA\[" />
					<!-- A doctype of some sort-->
					<regexp id="rx-doctype" attribute="xml-bracket" context="doctype" expression="&lt;!" />
					<!-- closing element -->
					<regexp id="rx-close-elem" attribute="xml-bracket" context="closing-element" expression="&lt;/" />
					<!-- opening element -->
					<regexp id="rx-open-elem" attribute="xml-bracket" context="opening-element" expression="&lt;\?{0,1}" />
                    <!-- Leftover end bracket from doctype -->
					<regexp id="rx-end-bracket" attribute="xml-bracket" context="value" expression="&gt;" />
				</context>
				<!-- cdata tag -->
				<context id="cdata" attribute="xml-cdata">
					<regexp id="rx-hidden" attribute="hidden" context="value" expression="\]\]&gt;" />
				</context>
				<!-- A doctype of some sort -->
				<context id="doctype" attribute="xml-code">
					<regexp id="rx-doc-bracket" attribute="xml-bracket" context="value" expression="&gt;" />
					<!-- Comment -->
					<regexp id="rx-doc-comment" attribute="xml-comment" context="doctype" expression="&lt;!--(.|\n)*?--&gt;" />
                    <!-- A quoted string or attribute name -->
					<regexp id="rx-doc-quote" attribute="xml-attribute-value" context="doctype" expression="(&quot;(.|[\r\n])*?&quot;|&apos;(.|[\r\n])*?&apos;|\b(\w|-|\.)+\b)" />
					<!-- A doctype of some sort-->
					<regexp id="rx-doc-nested" attribute="xml-bracket" context="doctype" expression="&lt;!" />
				</context>
				<!-- opening element context -->
				<context id="opening-element" attribute="xml-code">
					<!-- find tag... -->
					<regexp id="rx-attr" attribute="xml-tag" context="element-attributes" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- closing element -->
				<context id="closing-element" attribute="xml-code">
					<regexp id="rx-closing-elem" attribute="xml-tag" context="closing-element" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
				</context>
				<!-- attributes group -->
				<context id="element-attributes" attribute="xml-code">
					<!-- find end of element -->
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
					<!-- find attributes... -->
					<regexp id="rx-attr-name" attribute="xml-attribute-name" context="attribute-name" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- attribute name -->
				<context id="attribute-name" attribute="hidden">
					<regexp id="rx-elem-attrs" attribute="xml-attribute-value" context="element-attributes" expression="(&quot;(.|[\r\n])*?&quot;|&apos;(.|[\r\n])*?&apos;|\b(\w|-|\.)+\b)" />
                    <!-- This must come last as equals can appear in quoted strings -->
					<regexp id="rx-elem-equal" attribute="xml-attribute-equal" context="attribute-name" expression="=" />
				</context>
			</contexts>
		</language>
		<!-- SQL language specification -->
		<language id="sql" not-case-sensitive="yes" tabSize="8" name="SQL">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- (two dashes) line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="-" char1="-" />
					<!-- ' ' literals -->
					<regexp id="literal" attribute="literal" context="code" expression="'(.|\\'|\\\r\n)*?((\\\\)+'|[^\\]{1}')" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword SQL -->
					<keyword attribute="keyword" context="code" family="kwsql-keywords"/>
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment (two dashes) ... -->
				<context id="linecomment" attribute="sql-linecomment">
					<!-- finish line of comment, start block -->
					<!-- detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" / -->
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- Powershell language specification -->
		<language id="pshell" tabSize="4" name="PowerShell">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
					<!-- basic source code context -->
					<context id="code" attribute="code">
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- line comment -->
					<regexp id="pshellComment" attribute="comment" context="code" expression="#[^\r\n]*" />
					<!-- namespace -->
					<regexp id="namespace" attribute="namespace" context="code" expression="\[[^\r\n]+\]" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- pshell cmdlets -->
					<regexp id="pshellCmdlet" attribute="pshell-cmdlet" context="code" expression="(\b\w+-\b\w+)" />
					<!-- keyword powershell -->
					<keyword attribute="keyword" context="code" family="kwpshelllangoo-keywords" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
				</context>
			</contexts>
		</language>
		<!-- Python language specification -->
		<language id="python" tabSize="4" name="Python">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- Single line of comment -->
					<regexp id="python-comment" attribute="comment" context="code" expression="(?&lt;=\W|^)(#.*?)([\r\n]{1,2}|$)" />
					<!-- " " literals -->
					<regexp id="dqliteral" attribute="literal" context="code" expression="(&quot;&quot;)|(@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;))" />
					<!-- ' ' literals -->
					<regexp id="sqliteral" attribute="literal" context="code" expression="(&apos;&apos;)|(&apos;(.|\\&apos;|\\\r\n)*?((\\\\)+&apos;|[^\\]{1}&apos;))" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword Python-like -->
					<keyword attribute="keyword" context="code" family="kwpython-keywords" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		
		<language id="ds" tabSize="4" name="DS">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">

					<regexp id="dragonspeak-comment" attribute="comment" context="code" expression="^\*(.*)$" />
					<!-- Line ID -->
					<regexp id="LineID" attribute="LineID" context="code" expression="(\([0-9#]+):[0-9]+\)" />
					<!-- " " literals -->
					<regexp id="StringVar" attribute="StringVar" context="code" expression="~([A-Za-z0-9_]+)" />
					<regexp id="NumberVar" attribute="NumberVar" context="code" expression="%([A-Za-z0-9_]+)" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Strings -->
					<regexp id="String" attribute="string" context="code" expression="\{.*?\}" />

				</context>
			</contexts>
		</language>
		<language id="ms" tabSize="4" name="MS">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">

					<regexp id="dragonspeak-comment" attribute="comment" context="code" expression="^\*(.*)$" />
					<!-- Line ID -->
					<regexp id="LineID" attribute="LineID" context="code" expression="(\([0-9#]+):[0-9]+\)" />
					<regexp id="NumberVar" attribute="NumberVar" context="code" expression="%([A-Za-z0-9_]+)" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Strings -->
					<regexp id="String" attribute="string" context="code" expression="\{.*?\}" />

				</context>
			</contexts>
		</language>
	</languages>
</highlight>
